vhxubo's blog
关于

Vue 3

Vue Devtools 不支持 Vue3 Vuex

通过使用 vuex 提供的 createLogger 插件,在 console 中查看

Vue Router 页面跳转数据不更新

我的解决方案:location.href='/room/xxxx'

官方解决方案

数据绑定v-model

v-model默认绑定的是value,针对表单数据的。如果是自定义组件,记得修改监听

在Vue3中提供了modelValueupdate:modelValue,对应v-model的使用 自定义组件使用数据流双向绑定时,需要设置为其他的,否则还是单向的数据

在使用props作为响应式时一定是用toRefs()解耦操作

介绍|watch 响应式更改 | Vue.js

实现对任意父子组件数据的双向绑定

子组件

<template>
{{ jsonRef }}
<button @click="addJson">add</button>
</template>
<script>
import { ref, watch,toRefs } from 'vue'
export default {
props: ['json'],
emits: ['update:json'],
setup(props, context) {
// 这样是不行的,怎么说呢,就是这个数据太深入了监听不到
// const jsonRef = ref(props.json)
//应该是这样的***********
const { json: jsonRef } = toRefs(props)
const addJson = () => {
jsonRef.value += 1
}
//自定义事件中可以进行watch对数据进行更新
watch(jsonRef, () => {
context.emit('update:json', jsonRef.value)
})
return { jsonRef, addJson }
},
}
</script>

父组件


<template>
<div class="home">This is the home page</div>
<Test v-model:json="json" />
</template>

<script>
import Test from '@/components/Test.vue'
import { ref, watch } from 'vue'
export default {
name: 'Home',
components: { Test },
setup() {
const json = ref('hello emit')
// 父组件监听数据
watch(json, () => console.log(json.value))

return { json }
},
}
</script>

响应式遇到的问题

生命周期

除了beforecate和created(它们被setup方法本身所取代),我们可以在setup方法中访问的API生命周期钩子有9个选项:

Vue 3 生命周期完整指南 - SegmentFault 思否

在 Vue 中如何在模板中使用其他库函数

在 setup 中写新的函数调用库函数

模板调用

{{ dateTimeFormat(datetime) }}

函数设定

    const dateTimeFormat = datetime =>
dayjs(datetime).format("YYYY-MM-DD HH:mm:ss");

computed 也需要使用 .value

参考链接